Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces real-time remote cursor support to the collaborative board, improves WebSocket integration, and adds backend and frontend infrastructure for better development and testing. The most significant changes are the addition of remote cursor visualization, a new custom React hook for WebSocket board communication, and backend updates to support these features. It also adds Docker support and basic API tests.
Frontend: Real-time Collaboration Features
RemoteCursorsOverlayReact component to visually display other users' cursors on the board, showing their position and username. (apps/frontend/src/components/board/RemoteCursorsOverlay.tsxapps/frontend/src/components/board/RemoteCursorsOverlay.tsxR1-R69)useBoardWebSocketcustom hook to manage WebSocket connections, handle incoming cursor and document update events, and maintain a list of remote user cursors. (apps/frontend/src/hooks/useBoardWebSocket.tsapps/frontend/src/hooks/useBoardWebSocket.tsR1-R123)BoardPage, wiring up pointer movement to broadcast the current user's cursor and rendering the overlay for remote cursors. (apps/frontend/src/pages/board/BoardPage.tsx[1] [2] [3]Frontend: WebSocket Utilities
getWsBaseUrlandgetBoardWsUrlto construct proper WebSocket URLs for board communication, supporting both HTTP and HTTPS environments. (apps/frontend/src/lib/api.tsapps/frontend/src/lib/api.tsR24-R38)Backend: WebSocket and API Enhancements
user_idandusernameincursor.movedevents, enabling the frontend to identify and label remote cursors. (api/app/app/websocket/router.pyapi/app/app/websocket/router.pyL56-R61)Development and Testing Infrastructure
.dockerignorefile and a newDockerfilefor the API, using Python 3.12 anduvfor dependency management, to facilitate containerized development and deployment. (api/app/.dockerignore[1]api/app/Dockerfile[2]pytestconfiguration, fixtures, and initial tests for authentication and health endpoints. (api/app/pyproject.toml[1] [2]api/app/tests/conftest.py[3]api/app/tests/test_api_auth.py[4]api/app/tests/test_health.py[5]